// 自定义轮播图组件
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 奖品数据数组
    awardData: {
      type: Array,
      value: []
    },
    // 是否自动播放
    auto: {
      type: Boolean,
      value: true
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    currentIndex: 0,
    autoTimer: null,
    currentPrize: { prizeName: '', prizeImg: '' }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 更新当前奖品信息
    updateCurrentPrize() {
      const { currentIndex, awardData } = this.data;
      const currentPrize = awardData[currentIndex] || { prizeName: '', prizeImg: '' };
      
      // 只有当奖品信息真正改变时才更新，避免不必要的重新渲染
      if (JSON.stringify(currentPrize) !== JSON.stringify(this.data.currentPrize)) {
        this.setData({
          currentPrize: currentPrize
        });
      }
    },

    // 上一张
    prevSlide() {
      const { currentIndex, awardData } = this.data;
      const newIndex = currentIndex > 0 ? currentIndex - 1 : awardData.length - 1;
      this.setData({
        currentIndex: newIndex
      });
      this.updateCurrentPrize();
    },

    // 下一张
    nextSlide() {
      const { currentIndex, awardData } = this.data;
      const newIndex = currentIndex < awardData.length - 1 ? currentIndex + 1 : 0;
      this.setData({
        currentIndex: newIndex
      });
      this.updateCurrentPrize();
    },

    // 跳转到指定索引
    goToSlide(e) {
      const index = e.currentTarget.dataset.index;
      this.setData({
        currentIndex: index
      });
      this.updateCurrentPrize();
    },

    // 开始自动播放
    startAutoPlay() {
      const { auto, awardData } = this.data;
      // 先清除之前的定时器，避免重复创建
      this.stopAutoPlay();
      
      if (auto && awardData.length > 1) {
        this.data.autoTimer = setInterval(() => {
          this.nextSlide();
        }, 5000); // 每5秒自动切换
      }
    },

    // 停止自动播放
    stopAutoPlay() {
      if (this.data.autoTimer) {
        clearInterval(this.data.autoTimer);
        this.data.autoTimer = null;
      }
    }
  },

  /**
   * 组件生命周期
   */
  lifetimes: {
    attached() {
      // 组件实例进入页面节点树时执行
      this.updateCurrentPrize();
      this.startAutoPlay();
    },
    detached() {
      // 组件实例被从页面节点树移除时执行
      this.stopAutoPlay();
    }
  },

  /**
   * 数据监听器
   */
  observers: {
    'awardData': function(newVal, oldVal) {
      console.log('customCarousel - awardData changed:', newVal);
      // 只有当数据真正改变时才处理，避免初始化时的重复触发
      if (newVal && newVal.length > 0 && JSON.stringify(newVal) !== JSON.stringify(oldVal)) {
        this.updateCurrentPrize();
        this.startAutoPlay();
      }
    },
    'auto': function(newVal, oldVal) {
      console.log('customCarousel - auto changed:', newVal);
      // 只有当值真正改变时才处理
      if (newVal !== oldVal) {
        if (newVal) {
          this.startAutoPlay();
        } else {
          this.stopAutoPlay();
        }
      }
    }
  }
});
